package base;

import java.util.Scanner;

/*          奇数阶魔方阵
 *    
 *    
 * 
 * */
public class odd_orderMagicSquare {

	public static void main(String[] args) {
		System.out.println("输入奇数阶数n:");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		if (n % 2 == 0) {
			System.out.println("输入的数字不是奇数，请重新输入");
		} else {
			MagicSquare(n);

		}
	}

	public static void MagicSquare(int n) {

		int[][] arr = new int[n][n];

		// 数组赋初值
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				arr[i][j] = 0;
			}
		}

		int i = 0, j = n / 2;
		// "1"的位置
		arr[i][j] = 1;
		for (int x = 2; x <= n * n; x++) {
			int row = i--; // 行       row=0;   i=-1;
			int col = j++; // 列        col=1;   j=2;
			if (row == 0 && !(col == n - 1)) {//填入的数字在第一行（不在第N列），下一个数在第N行
				i = n - 1; 
				
			}
			if (col == n - 1 && !(row == 0)) { //填入数字在最后一列（不在第一行），下一个数字在最左边
				j = 0; 
				
			}
			if (row == 0 && col == n - 1) { 
				i = i + 2; 
				j--;
			}
			if (arr[i][j] != 0) { //应填的地方有数字
				i = i + 2;
				j--;
			}
			if (arr[i][j] == 0) { 
				arr[i][j] = x;
			}
		}
		for (int x = 0; x < arr.length; x++) {
			for (int k = 0; k < arr[x].length; k++) {
				System.out.print(arr[x][k] + "\t");
			}
			System.out.println();
		}
	}

	
	
}
